# -*- codeing = utf-8 -*-
# @Time : 2021/2/26 17:39
# @Atuthor: 朱朱
# @File: 114单例设计模式.py
# @Software: PyCharm
""
"""
确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例，
这个类称为单例类，单例模式是一种对象创建型模式。
"""
class Singleton:
    __instance = None
    __is_first = True

    # 单列实现关键操作 __new__ 方法
    # 如果这个类的内存不存在,就调用new生成一个内存地址,并返回
    @classmethod
    def __new__(cls, *args, **kwargs):
        if cls.__instance is None:
            cls.__instance = object.__new__(cls)
            # 申请内存,创建一个对象,并把对象的类型设置为cls
        return cls.__instance


    def __init__(self,name, age):
        if self.__is_first:
            self.name = name
            self.age = age
            self.__is_first = False


s1 = Singleton('jack',18)
s2 = Singleton('tony',18)
s3 = Singleton('tom',18)
print(s1)   # <__main__.Singleton object at 0x0000014500006D48>
print(s2)   # <__main__.Singleton object at 0x0000014500006D48>
print(s1.name) # jack
print(s2.name) # jack
print(s3.name) # jack
